package Frames; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Iterator; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; import Design.OPDept; import Design.Order; import Design.Product; import Design.Warehouse; import Read_Write.InputOutput; public class UserPanel { private JFrame user; private JLabel prod; private JTextField prodbox; private JLabel amount; private JTextField amountbox; private JLabel status; private JTextField statusbox; private JButton placeorder; private JTable table; private JLabel orders; private JLabel existprod; private static DefaultTableModel tablemodel; private static DefaultTableModel tablemodel2; private JButton search; private JLabel idlabel; private JTextField idbox; JTable table2 = new JTable(); private Iterator<Product> it; private Warehouse w; private Product p; private InputOutput x; private OPDept y; public UserPanel() { user = new JFrame("Customer Panel"); user.setSize(500, 500); user.setVisible(true); user.setLocationRelativeTo(null); user.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); user.setLayout(null); prod = new JLabel("Product to Order: "); prodbox = new JTextField(); amount = new JLabel("Quantity: "); amountbox = new JTextField(); status = new JLabel("Status: "); statusbox = new JTextField(); placeorder = new JButton("Place Order"); orders = new JLabel("Orders: "); existprod = new JLabel("Existing Products: "); idlabel = new JLabel("ID: "); idbox = new JTextField(); idlabel.setBounds(30, 10, 80, 30); user.add(idlabel); idbox.setBounds(20, 40, 30, 20); user.add(idbox); prod.setBounds(80, 10, 120, 30); user.add(prod); prodbox.setBounds(80, 40, 100, 20); user.add(prodbox); amount.setBounds(200, 10, 100, 30); user.add(amount); amountbox.setBounds(200, 40, 50, 20); user.add(amountbox); placeorder = new JButton("Place Order"); placeorder.setBounds(350, 30, 120, 30); user.add(placeorder); search = new JButton("Search"); search.setBounds(270, 30, 80, 30); user.add(search); status.setBounds(20, 220, 100, 30); user.add(status); statusbox.setBounds(70, 225, 300, 20); statusbox.setEditable(false); user.add(statusbox); existprod.setBounds(20, 260, 150, 30); user.add(existprod); orders.setBounds(20, 90, 100, 30); user.add(orders); JScrollPane pane = new JScrollPane(); JScrollPane pane2 = new JScrollPane(); pane2.setViewportView(table2); setTable(new JTable()); tablemodel = new DefaultTableModel(new Object[] { "Product Name", "Quantity", "Price" }, 0); tablemodel2 = new DefaultTableModel(new Object[] { "Order ID", "Product Name", "Quantity", "Price" }, 0); getTable().setModel(tablemodel); table2.setModel(tablemodel2); pane.setViewportView(getTable()); pane.setBounds(20, 300, 250, 150); pane2.setBounds(20, 110, 450, 100); user.add(pane); user.add(pane2); w = new Warehouse(); x = new InputOutput(); y = new OPDept(); w = x.deserWarehouse(); y = x.deserOrders(); search.addActionListener(new SearchBActionListener()); placeorder.addActionListener(new PlaceOrderActionListener()); } private void printOrder(Order o) { Object[] row = { o.getID(), o.getName(), o.getQuantity(), p.getPrice() }; ((DefaultTableModel) getModel2()).addRow(row); } class SearchBActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { it = w.getProductsInOrder(); boolean y = false; try { while (it.hasNext()) { p = it.next(); if (p.getName().equals(prodbox.getText())) { y = true; } } if (y == false) { JOptionPane.showMessageDialog(null, "There is no product!"); } else { JOptionPane.showMessageDialog(null, "Product found!"); } } catch (Exception a) { JOptionPane.showMessageDialog(null, "Try Again!"); } } } class PlaceOrderActionListener implements ActionListener { @Override public void actionPerformed(ActionEvent arg0) { it = w.getProductsInOrder(); int row = AdminPanel.getRow(getTable().getModel(), prodbox.getText()); int row2= AdminPanel.getRow(getModel2(),amountbox.getText()); Integer quant = (Integer) table.getModel().getValueAt(row, 1); Integer aux= (Integer) table2.getModel().getValueAt(row, 2); while(it.hasNext()) { p = it.next(); if (p.getName().equals(prodbox.getText()) && Integer.parseInt(amountbox.getText())<=p.getQuantity()) { Order o = new Order(Integer.parseInt(idbox.getText()), prodbox.getText(), Integer.parseInt(amountbox.getText()), p.getPrice() * Integer.parseInt(amountbox.getText())); y.addOrder(o); table.getModel().setValueAt(new Integer(quant - Integer.parseInt(amountbox.getText())), row, 1); p.setQuantity(new Integer(p.getQuantity() - Integer.parseInt(amountbox.getText()))); table2.getModel().setValueAt(new Integer(aux * Integer.parseInt(amountbox.getText())), row2,3); o.setPrice(p.getPrice() * Integer.parseInt(amountbox.getText())); printOrder(o); statusbox.setText("Order success!"); } else { statusbox.setText("Not enough products in stock!"); } } x.serWarehouse(w); x.serOrders(y); } } public static Object getModel() { return tablemodel; } public static TableModel getModel2() { return tablemodel2; } public JTable getTable() { return table; } public void setTable(JTable table) { this.table = table; } }